<?php
	require_once("../Test/FormValidator.php");
	
	class CreateUserHandler
	{
		const SELECT_ALL_QUERY = "SELECT * FROM User";
		
		//Konstruktor variabel.
		private $db = NULL;
        
		//Konstruktor.
        public function __construct(DatabaseHandler $db) 
        {
        	$this->db =$db;
        }
		
		//funktion för att lägga till medlemmar i databasen.
		public function CreateUser($userName, $password)
		{
			$this->db->InsertUpdateDeleteFromDb("INSERT INTO User (UserName, Password) VALUES ('$userName', '$password')");
			return true;
		}
		
		//funktion som kollar i databasen om en användare existerar.
		public function UserExists($userName, $password)
		{
			if($this->db->checkUserAndPassword($userName, $password, CreateUserHandler::SELECT_ALL_QUERY) == true)
			{
				return true;
			}
			return false;
		}
		
		//funktion som tar bort en användare från databasen.
		public function DeleteUser($userName)
		{
			$this->db->InsertUpdateDeleteFromDb("DELETE FROM User WHERE UserName = '$userName'");
			return true;
		}
		
		//funktion som kollar så att användaruppgifter är korrekta.
		public function VerifyUser($userName, $password1, $password2)
		{
			$formValidator = new FormValidator();
			
						$formValidator->ValidateUsername($userName);
						$formValidator->ValidatePassword($password1);
			$errors = 	$formValidator->ComparePasswords($password1, $password2);
			
			return $errors;
		}
		
		//TEST FUNKTION
		public function Test()
		{
			if(count($this->VerifyUser("Adamsson", "123", "123")) == 0)
			{
				echo "Lösenordet godkändes men var mindre än 6 tecken.";
				return false;
			}
			if(count($this->VerifyUser("", "123", "123")) == 0)
			{
				echo "Tomt användarnamn godkändes.";
				return false;
			}
			if($this->UserExists("TESTAR123", "1234567") == false)
			{
				echo "Man kunde skapa 2 användare med samma namn.";
				return false;
			}
			//SUPER TESTAT SJÄLV!
			if($this->CreateUser("Johan123", "pandaria") != true)
			{
				echo "Det gick inte att lägga till en användare.";
				return false;
			}
			//SUPERTESTAD ÄVEN DENNA!
			if($this->DeleteUser("Johan123") != true)
			{
				echo "Det gick inte ta bort en användare.";
				return false;
			}
			return true;
			
		}
	}
?>